package com.lanou3g.code0517.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
整个session的创建流程
1.浏览器,第一次访问网站中的页面,没有携带key为JSESSIONID的值
2.服务器,创建一个新的session,并使用sessionID作为key存在服务器内存中
3.服务器,返回给客户端cookie,JSESSIONID=sessionID
4.客户端携带JSESSIONID发起请求
5.服务器根据这个JSESSIONID从内存中提取指定session,不再创建新的session;如果这
个JSESSIONID在服务器中没有,那么服务器会继续创建session,并把id放到cookie中
 */
@WebServlet(name = "SessionServlet01", urlPatterns = "/session01")
public class SessionServlet01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //如果可以使用已有session,则使用已有session,如果没有,创建session,则会自动创建一个session,
        //并分配JSESSIONID
        HttpSession session = request.getSession();
        //获取创建时间(获取session的时间)
        //java中,时间是从1970年开始经过的毫秒数
        long time = session.getCreationTime();
        Date date = new Date(time);
//        int year = date.getYear();//年
//        int month = date.getMonth();//月
//        int day = date.getDay();//日
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
        System.out.println(sdf.format(new Date(time)));
        //获取sessionID
        //自己手动设置JSESSIONID的超时时间
        String sessionID = session.getId();
        Cookie cookie = new Cookie("JSESSIONID", sessionID);
        cookie.setMaxAge(7 * 24 * 3600);//1周的超时时间
        cookie.setPath("/");
        response.addCookie(cookie);
        //手动设置这一个session的超时时间,不会影响其他session,单位是秒!!
        session.setMaxInactiveInterval(30);
        //立即销毁session
        //注销功能(取消登录)
        session.invalidate();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
